package demo3;

/**
 * 客户端：模拟旧系统调用逻辑（无需修改任何代码，仅替换实现类）
 */
public class CryptoClient {
    public static void main(String[] args) {
        String plainText = "Hello, Adapter Pattern!";
        String key = "12345678"; // DES密钥需8位

        // 1. 旧接口调用（原系统逻辑）
        System.out.println("=== 旧接口调用 ===");
        OldCryptoService oldService = new OldCryptoServiceImpl();
        String oldEncrypt = oldService.encryptOld(plainText, key);
        System.out.println("旧加密结果：" + oldEncrypt);
        String oldDecrypt = oldService.decryptOld(oldEncrypt, key);
        System.out.println("旧解密结果：" + oldDecrypt + "\n");

        // 2. 适配器调用（替换旧接口，调用新组件，旧系统调用逻辑不变）
        System.out.println("=== 适配器调用（新组件） ===");
        CryptoTarget newService = new CryptoAdapter(); // 仅替换实现类，方法调用与旧接口一致
        String newEncrypt = newService.encryptOld(plainText, key); // 与旧接口调用方式完全相同
        System.out.println("新加密结果（Base64）：" + newEncrypt);
        String newDecrypt = newService.decryptOld(newEncrypt, key); // 调用方式不变
        System.out.println("新解密结果：" + newDecrypt);
    }
}